package com.hmall.common.config;

import com.hmall.common.interceptors.UserInfoInterceptor;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 重要
 * 用于拦截器配置，要使用拦截器，必须实现WebMvcConfigurer接口
 * 要使配置类生效还要在resources目录下创建META-INF文件夹，并创建spring.factories文件
 * spring.factories文件内容：org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.hmall.common.config.MvcConfig
 */
@Configuration
// 判断DispatcherServlet类是否存在，如果存在则执行配置类(这个类是springMvc的核心类) 网关默认没有这个类，要使它在网关不生效所以要加这个注解
@ConditionalOnClass(DispatcherServlet.class)
public class MvcConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 将创建好的拦截器添加到拦截器链中，默认拦截所有请求
        registry.addInterceptor(new UserInfoInterceptor());
    }
}
